package com.example.demo.vo;

import com.example.demo.exception.CommonStatusEnum;
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true) // 支持链式编程
public class ResponseResult<T> {
    private int code;
    private String message;
    private T data;

    /**
     * 成功响应有数据的方法
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ResponseResult success(T data){
        // 链式编程
        return new ResponseResult().setCode(CommonStatusEnum.SUCCESS.getCode()).setMessage(CommonStatusEnum.SUCCESS.getValue()).setData(data);
    }

    /**
     * 成功响应默认没有数据的方法
     * @return
     * @param <T>
     */
    public static <T> ResponseResult success(){
        return new ResponseResult().setCode(CommonStatusEnum.SUCCESS.getCode()).setMessage(CommonStatusEnum.SUCCESS.getValue());
    }

    /**
     *
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ResponseResult fail(T data){
        return new ResponseResult().setData(data);
    }

    /**
     * 自定义失败 错误码 和 提升信息
     * @param code
     * @param message
     * @return
     */
    public static ResponseResult fail(int code, String message){
        return new ResponseResult().setCode(code).setMessage(message);
    }

    /**
     * 自定义失败 错误码 和 提示信息 和 数据
     * @param code
     * @param message
     * @param data
     * @return
     */
    public static ResponseResult fail(int code , String message, String data){
        return new ResponseResult().setCode(code).setMessage(message).setData(data);
    }

}